// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.expr.SQLLiteralExpr;
// import com.alibaba.druid.sql.dialect.mysql.ast.MySqlObjectImpl;
// import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;

// import java.util.Collections;
// import java.util.List;
#pragma once
#include "../../../../../utils/common_ptr.h"
#include "../MySqlObjectImpl.h"
#include "../../../../ast/SQLExpr.h"

class MySqlOutFileExpr :public MySqlObjectImpl ,virtual public SQLExpr {
  public:
    SQLExpr_ptr file;
    string_ptr charset;

    SQLExpr_ptr columnsTerminatedBy;
    BOOL_ptr columnsEnclosedOptionally;
    SQLLiteralExpr_ptr columnsEnclosedBy;
    SQLLiteralExpr_ptr columnsEscaped;

    SQLLiteralExpr_ptr linesStartingBy;
    SQLLiteralExpr_ptr linesTerminatedBy;

    SQLExpr_ptr ignoreLinesNumber;

    MySqlOutFileExpr() ;

    MySqlOutFileExpr(SQLExpr_ptr file) ;
  SHAREDOBJECT(MySqlOutFileExpr);

    // @Override
    void accept0(MySqlASTVisitor_ptr visitor) ;

    // @Override
    SQLObject_list_ptr getChildren() ;

    SQLExpr_ptr getFile() ;

    void setFile(SQLExpr_ptr file) ;

    string_ptr getCharset() ;

    void setCharset(string_ptr charset) ;

    SQLExpr_ptr getColumnsTerminatedBy() ;

    void setColumnsTerminatedBy(SQLExpr_ptr columnsTerminatedBy) ;

    BOOL_ptr isColumnsEnclosedOptionally() ;

    void setColumnsEnclosedOptionally(BOOL_ptr columnsEnclosedOptionally) ;

    SQLLiteralExpr_ptr getColumnsEnclosedBy() ;

    void setColumnsEnclosedBy(SQLLiteralExpr_ptr columnsEnclosedBy) ;

    SQLLiteralExpr_ptr getColumnsEscaped() ;

    void setColumnsEscaped(SQLLiteralExpr_ptr columnsEscaped) ;

    SQLLiteralExpr_ptr getLinesStartingBy() ;

    void setLinesStartingBy(SQLLiteralExpr_ptr linesStartingBy) ;

    SQLLiteralExpr_ptr getLinesTerminatedBy();

    void setLinesTerminatedBy(SQLLiteralExpr_ptr linesTerminatedBy) ;

    SQLExpr_ptr getIgnoreLinesNumber() ;

    void setIgnoreLinesNumber(SQLExpr_ptr ignoreLinesNumber) ;

    SQLObject_ptr clone() ;
};
